Skip to content

救回在kvm虚拟机中的数据

最近诸事不顺...经一起合租的朋友提醒,才发现online独服已经掉线一天多无法连接了,无奈上offline官网,折腾了半天Dell的远程界面iDRAC,确实是十分难用(。发现Bios已经找不到硬盘了,发工单给offline经检查,果然是硬盘炸掉了,这块硬盘常年被我用于挂各种pt站,大概也是折腾的不轻,但是骂归骂,数据还是要救的。

这个杜甫上,大部分的数据是来自于pt站的存货,这些丢了就丢了大不了重下回来,但还有一部分数据,是来自于我自己写的一些小玩意儿,比如网站的配置,还有网络工具的一些logs,虽说自己也可以重新写一遍,但是有总是好的(其实是因为我现在看我几年前写的东西发现看不懂)。

由于这个杜甫是我与另一位同学共同购置的,所以它基于一个CentOS作为母鸡底,在其之上构筑KVM虚拟机服务,我们两个人一人一半性能,这两天登进去看了看惨不忍睹(x,什么,我几年前是怎么配出这种辣鸡玩意儿的(x。用一个完整的系统作为基础就不说了,怎么这么多破破烂烂的代码,这他妈谁写的文本废物(几年前的我x

然后就是救回数据了,由于我们两个的数据全都是在kvm虚拟机中,所以系统里只有两个数百G的qcow2文件,我不可能花上巨大的时间把整个系统完全备份,而且硬盘损坏我也不知道损坏了多少,即使备份出来了可能也无法使用,经大佬指点,发现Linux本身就可以直接挂载kvm镜像

首先需要激活内核中的NBD模块

modprobe nbd max_part=8

在这里我有两个kvm虚拟机需要备份,所以我先备份第一个

qemu-nbd --connect=/dev/nbd0 archlinux.qcow2

之后就可以使用fdisk查看到这块虚拟硬盘的分区详情了

fdisk /dev/nbd0 -l

之后就是和普通的挂载方法一样,挂载进系统

mount /dev/nbd0p2 /mnt/temp

在我使用的Ubuntu LiveCD中,出现了这时候找不到nbd0p2的错误提示,查找资料以后发现需要加上这样一句

partx -a /dev/nbd0

这样就可以正常挂载在系统中了,使用完之后就可以取消挂载

umount /mnt/temp
qemu-nbd --disconnect /dev/nbd0
rmmod nbd

Published in技术探究

Be First to Comment

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注